package com.example.pipibee.service;

import com.example.pipibee.pojo.param.*;
import com.example.pipibee.pojo.vo.*;
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 医生端_业务层
 */
@Transactional
public interface DoctorService {

    /**
     * 插入_住院病案_主表
     *
     * @param doctorInsertParam
     */
    void addNewMrin(DoctorInsertParam doctorInsertParam);

    /**
     * 插入_住院病案_诊断表
     *
     * @param doctorDiaInsertParam
     */
    void addNewDia(DoctorDiaInsertParam doctorDiaInsertParam);

    /**
     * 插入_住院病案_手术表
     *
     * @param doctorSurInsertParam
     */
    void addNewSur(DoctorSurInsertParam doctorSurInsertParam);

    /**
     * 批量删除_住院病案_诊断表
     *
     * @param doctorDiaDeleteParam
     * @return
     */
    void deleteDia(DoctorDiaDeleteParam doctorDiaDeleteParam);

    /**
     * 批量删除_住院病案_手术表
     *
     * @param doctorSurDeleteParam
     * @return
     */
    void deleteSur(DoctorSurDeleteParam doctorSurDeleteParam);

    /**
     * ALL删除_住院病案_主表
     *
     * @return
     */
    void deleteAllMrin(DoctorDeleteAllMrinParam doctorDeleteAllMrinParam);

    /**
     * 修改_住院病案_主表
     *
     * @param doctorUpdateMrinParam
     * @return
     */
    void updateMrin(DoctorUpdateMrinParam doctorUpdateMrinParam);

    /**
     * 修改_诊断表
     *
     * @param doctorDiaUpdateParam
     * @return
     */
    void updateDia(DoctorDiaUpdateParam doctorDiaUpdateParam);

    /**
     * 修改_手术表
     *
     * @param doctorSurUpdateParam
     * @return
     */
    void updateSur(DoctorSurUpdateParam doctorSurUpdateParam);

    /**
     * 批量出院
     *
     * @param doctorDischargeParam
     * @return
     */
    void discharge(DoctorDischargeParam doctorDischargeParam);

    /**
     * 医生端_批量提交
     */
    void submit(DoctorSubmitParam doctorSubmitParam);

    /**
     * 病案室_批量审批
     *
     * @param doctorApprovalParam
     */
    void approval(DoctorApprovalParam doctorApprovalParam);

    /**
     * 查询填充_手术表
     *
     * @param doctorSurUpdateSelectParam
     * @return
     */
    DoctorSurUpdateSelectVO updateSurSelect(DoctorSurUpdateSelectParam doctorSurUpdateSelectParam);

    /**
     * 查询填充_诊断表
     *
     * @param doctorDiaUpdateSelectParam
     * @return
     */
    DoctorDiaUpdateSelectVO updateDiaSelect(DoctorDiaUpdateSelectParam doctorDiaUpdateSelectParam);

    /**
     * 查询_住院病案_简略列表
     *
     * @param doctorListSelectParam
     */
    PageBean selectList(DoctorListSelectParam doctorListSelectParam);

    /**
     * 查询_住院病案_主表
     *
     * @param doctorDataSelectParam
     * @return
     */
    DoctorSelectMrinVO selectMrin(DoctorDataSelectParam doctorDataSelectParam);

    /**
     * 查询_住院病案_诊断表
     *
     * @param doctorDataSelectParam
     * @return
     */
    List<DoctorSelectDiaVO> selectDia(DoctorDataSelectParam doctorDataSelectParam);

    /**
     * 查询_住院病案_手术表
     *
     * @param doctorDataSelectParam
     * @return
     */
    List<DoctorSelectSurVO> selectSur(DoctorDataSelectParam doctorDataSelectParam);

    /**
     * 住院病案_简略列表_Excel导出
     *
     * @param doctorListSelectParam
     * @param response
     */
    void export(DoctorListSelectParam doctorListSelectParam, HttpServletResponse response);
}
